// stdx/intrinsicsx.rs
// CRITICAL: intrinsics 通常为编译器内部 API；仅提供安全包装与说明。
// AUTO_COMMENT: 不直接使用 unsafe intrinsics，推荐使用稳定 API。

#[allow(dead_code)]
pub fn stdx_examples_intrinsicsx() {
    // CRITICAL: 示例提醒用户避免直接使用核心内在函数
    let _ = "intrinsics are compiler-provided; prefer stable std APIs";

    // CRITICAL: 一些稳定的内在函数包装
    use std::intrinsics;

    // CRITICAL: 断言（编译时检查）
    // intrinsics::assert_inhabited::<i32>(); // 不稳定

    // CRITICAL: 类型相关
    let size = std::mem::size_of::<i32>(); // 代替 intrinsics::size_of

    // CRITICAL: 算术内在（使用稳定版本）
    let add = 1i32.wrapping_add(2);
    let sub = 1i32.wrapping_sub(2);

    // CRITICAL: 位操作
    let ctlz = 1u32.leading_zeros();
    let cttz = 1u32.trailing_zeros();

    // CRITICAL: 内存屏障（使用原子操作）
    use std::sync::atomic::{AtomicI32, Ordering};
    let atomic = AtomicI32::new(0);
    atomic.store(1, Ordering::SeqCst);

    let _ = (size, add, sub, ctlz, cttz, atomic);
}
